﻿// 下面的哪些初始化是合法的？请说明原因。

//int i = -1, & r = 0;         
//int* const p2 = &i;        
//const int i = -1, & r = 0;  
//const int* const p3 = &i;  
//const int* p1 = &i;        
//const int& const r2;        
//const int i2 = i, & r = i;   

#include <iostream>

int main()
{
	int i = -1, & r = 0;         // 非法，非常量引用无法引用字面值类型
	int* const p2 = &i;        // 合法
	const int i = -1, & r = 0;   // 合法
	const int* const p3 = &i;  // 合法
	const int* p1 = &i;        // 合法
	const int& const r2;        // 非法，引用没有顶层const
	const int i2 = i, & r = i;   // 合法
}
